<?php
/**
 * <https://y.st./>
 * Copyright © 2016 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'title' => 'There is no way to win with her',
	'body' => <<<END
<p>
	My mother has come to the conclusion that my journal is an attack on her, and that I write in it only so use against her.
	First of all, most of the content of my journal has nothing to do with her.
	Second, I wasn&apos;t trying to attack her yesterday with the entry I found, I was trying to defend myself! I swear, she&apos;s more paranoid than even I am in some ways.
	Next, she was insisting that I may have told her, but that I hadn&apos;t gotten her attention, so she didn&apos;t hear.
	I said nothing until she pressured for more information about the entry, at which point I explained that it said that she had come in to take a look at it.
	At that point, she said that she may have taken a look at it but had been too stressed to remember.
	She was still taking my recording of the event to be an attack though.
	I promised that I wouldn&apos;t bring up passages from my journal again to her, then asked if I could have her sign off that I&apos;d told her things if I asked her too.
	She said that the only thing that she&apos;d sign if i asked for her to sign off on having been told is an eviction notice.
	In other words, I&apos;m not allowed to defend myself whatsoever.
	Whatever she says happened goes, even if she&apos;s dead wrong.
	Likewise, she told me off for standing up for Vanessa, which I often do when mother has screwy ideas in her head and is telling Vanessa off for no good reason.
	Apparently, I can&apos;t defend my sister either, as defending is interpreted as an attack against the attacking party, our mother.
	This living situation is horrid, and I need to get myself out of it.
	I need to find a job and move out.
</p>
<p>
	I spent the productive part of my day visiting what I thought were the local offices of my dentist.
	I looked up the addresses again online before heading out, finding three locations in North Bend, and found that I was on the correct website yesterday when I saw the Virginia Avenue address.
	However, that address doesn&apos;t actually have an office run by my dental health provider.
	While I was looking for Advantage Dental, this office was run by Above Dental.
	Furthermore, the location will soon be run by Apple Dental, which again, isn&apos;t Advantage dental.
	So why does Advantage Dental have this address listed as one of their offices? The second location was the one that I&apos;d visited yesterday, so I passed it by.
	The third location was also not actually an Advantage Dental office.
	This time, the office was owned by the Woodland Dental Clinic.
	Why in the world are two out of the three Advantage Dental locations listed on the Advantage Dental clinic not actually Advantage Dental locations? After I explained the situation, aside from the fact that I was trying to get an earlier appointment by visiting several locations, the woman at the Woodland Dental Clinic called the Advantage looked me up on her computer.
	Apparently, the Woodland Dental Clinic and Advantage Dental are either on the same computer system or can at least retrieve information from each other&apos;s systems.
	Maybe all the local dental practices can do that.
	In any case, even after having spoken directly with an Advantage Dental representative in person yesterday about setting up an appointment at the local office, The Coos Bay office was listed as being the one that I was supposed to visit, so the woman at the Woodland Dental Clinic telephoned Advantage Dental and got that cleared up.
	I think at this point, it might be a bad idea to try getting an appointment at the original Coos Bay location, so I gave up on that plan.
	On the way home, I walked into the local office and set up my appointment there.
	On May 23, I will see the dentist if we are still in the area.
</p>
<p>
	My mother asked how my tooth was doing, so I told her that it was fine.
	The fact is, it wasn&apos;t hurting at the moment.
	The pain comes and goes.
	She interpreted this to mean that I had somehow managed to kill the tooth, so it wasn&apos;t going to feel pain any more.
	I&apos;m not even going to bother trying to set her strait on that.
	She seems very much of the opinion that the pain is one of the main problems with the damaged tooth, but I disagree.
	The pain is a warning of the problem.
	With her thinking that it&apos;s done hurting though, maybe she&apos;ll worry less.
	Additionally, maybe she will just forget about or drop her plan to have me try lying to the dentists.
	It was stupid of me to tell her about the toothache in the first place.
	I need to learn to keep my mouth shut.
</p>
<p>
	I decided not to use either of the data-packing schemes that I came up with for exception codes yesterday.
	The problem with them is that they don&apos;t make full use of the thirty-two bit integer range.
	Some thirty-two bit integers wouldn&apos;t translate to actual information.
	It&apos;s already the case that most sixty-four bit integers won&apos;t translate to error strings, but that&apos;s just the cost of making my code compatible with thirty-two bit platforms.
	I shouldn&apos;t waste what space I have in the thirty-two bit range though.
	Additionally, translating the thirty-two bit integer back into a readable error code on a thirty-two bit platform while using a twenty-three or forty character character set seems like a nearly impossible task without the $a[GMP] extension.
	If I use a character set that allows me to break the integer directly on lines between bits, the task becomes much more manageable.
	Now I just needed to decide what size I want my character set to be.
	Any remaining bits left over that can&apos;t be translated into full characters can be used to store binary flags of some sort.
	Using four-bit bit characters, I have a sixteen-character character set to work with.
	I woulnd&apos;t have even a full alphabet, but I&apos;d have eight-character error strings to work with.
	If I use five-bit characters, I have a thirty-two character character set to work with, which would give me every capital $a[ASCII] letter to work with and either some digits or some punctuation.
	I&apos;d have six-character strings with two flag bits.
	With six-bit characters, I&apos;d have five-character strings, again with two flag bits.
	I&apos;d also have a sixty-four character character set to work with.
	The obvious choice in character sets would be the base sixty-four character set specified by <a href="https://tools.ietf.org./html/rfc4648#section-4">$a[RFC] 4648</a>.
	That would give me all fifty-two $a[ASCII] letters, all ten digits, slashes, and plus signs.
	That&apos;s about the upper limit on character set sizes.
	Adding another bit would provide a one hundred twenty-eight character character set, but there&apos;s not enough printable $a[ASCII] characters to make use of the full space.
	The available space is far too limited to include Unicode characters.
	Five-bit character, six-character codes and six-bit character, five-character codes seem like the best options.
	Both options provide two extra bits to use as flags, so why not use both? The first flag can be used to determine if the exception was thrown from a function/method or from user code.
	The second flag can be used to determine if the numeric error code represents a string using a five-bit character character set or a six-bit character character string.
</p>
<p>
	I set about building the functions that implement what I described above, but I found that they don&apos;t work when I use the &quot;function/method&quot; flag, my exception code strings can no longer be translated back from integers.
	Instead, they end up translated to new strings.
	It took me forever to track down the bug.
	For some reason, I thought that signed integers behave in a very strange way bitwise when dealing with negative numbers.
	This isn&apos;t the case at all, and they actually behave <a href="http://kias.dyndns.org./comath/13.html">very consistently</a> and in exactly the way that I thought that they should be implemented.
	I have no idea where I got the screwy format from that I thought that signed integers use.
	In any case, fixing this is going to be a pain.
	$a[PHP] doesn&apos;t have a concept of unsigned integers, which would make stuffing values into integers easy.
	Likewise, $a[PHP]s signed integers vary in length depending on platform.
	I can&apos;t depend on them to be of a particular size.
	I&apos;m probably going to have to work arround this with some funky conditional padding.
	If positive, I need to pad with zeros, if negative, I need to pad with ones.
	The padding will likely have to be done with a bitmask that is obtained by taking -1 and removing the least-significant thirty-one bits.
	It seems like this is going to be a headache.
</p>
<p>
	Some people are trying to build a community at <a href="ircs://kitsune6uv4dtdve.onion:6697/%23Lisp">#Lisp on Volatile</a>, so I&apos;ve been hanging out there to provide another nick for the list and act as a greeter.
	I&apos;ve been talking about my attempts to store strings in integers there because it&apos;s programming-related, so it&apos;s somewhat-tangent to Lisp.
	There&apos;s not enough people there to have regular discussions on Lisp yet, so I figured it might get people talking.
	I mentioned the unreliability of integer lengths, which made devnull question if I was even speaking about Lisp, as $a[PHP] is probably one of the few languages that even has this issue; it&apos;s unlikely that Lisp does.
	Upon explaining that I was using $a[PHP] and not Lisp, z said that the solution was to switch to Lisp.
	I brought up my need for real name spaces and asked if Lisp had them, so he gave me a link to what I think is a <a href="https://github.com/guicho271828/lisp-namespace">Lisp name space module</a>.
	This tells me that Lisp doesn&apos;t have name spaces in the core language, but this module might fix that.
	I don&apos;t understand the module though, so I&apos;m not sure if it provides what I need.
	I think I&apos;d need to learn Lisp before I can understand the module enough to know if it fits my needs.
	I suppose I&apos;ll add learning Lisp to my to do list, though I really don&apos;t have time to work on that right now.
	It&apos;ll have to wait.
</p>
END
);
